home *** CD-ROM | disk | FTP | other *** search
- macro 'Export LUT [E]';
- {
- Copies the current look-up table to the Area(Red), Mean(Green) and
- Perimeter/Length(blue) columns. Use the Export command to copy
- it to a tab-delimeted text file. Max Measurements must be set to
- 256 or greater.
- }
- var
- i:integer;
- v:real;
- begin
- SetCounter(256); {SetCounter new in V1.41}
- MeasureArea(true);
- MeasureDensity(true);
- MeasurePerimeter(true);
- for i:=0 to 255 do begin
- rArea[i+1]:=RedLut[i];
- rMean[i+1]:=GreenLut[i];
- rLength[i+1]:=BlueLut[i];
- end;
- ShowResults;
- {Export;}
- end;
-
-
- macro 'Invert LUT [I]';
- var
- i:integer;
- begin
- for i:=0 to 255 do begin
- RedLUT[i]:=255-RedLut[i];
- GreenLUT[i]:=255-GreenLut[i];
- BlueLUT[i]:=255-BlueLut[i];
- if (i mod 10)=0 then UpdateLUT;
- end;
- UpdateLUT;
- end;
-
-
- macro 'Random Colors [C]';
- var
- i,colors,entries,first,last,r,g,b:integer;
- begin
- colors:=25;;
- entries:=256/colors;
- if entries>256 then entries:=256;
- repeat
- first:=random*255;
- last:=first+entries-1;
- if last>255 then last:=255;
- r:=random*255;
- g:=random*255;
- b:=random*255;
- for i:=first to last do begin
- RedLUT[i]:=r;
- GreenLUT[i]:=g;
- BlueLUT[i]:=b;
- end;
- UpdateLUT;
- until button;
- end;
-
-
- macro 'Log Tranform';
- var
- i,v:integer;
- ln255:real;
- BEGIN
- RedLUT[255]:=0;
- GreenLUT[255]:=0;
- BlueLUT[255]:=0;
- ln255:=ln(255);
- for i:=1 to 255 DO begin
- v:=round(ln(i)*255.0/ln255);
- RedLUT[255-i]:=v;
- GreenLUT[255-i]:=v;
- BlueLUT[255-i]:=v;
- end;
- UpdateLUT;
- END.
-
-
- macro 'Square Tranform';
- var
- i,v:integer;
- sqr255:real;
- BEGIN
- sqr255:=sqr(255.0);
- for i:=1 to 255 DO begin
- v:=round(sqr(i)*255.0/sqr255);
- RedLUT[255-i]:=v;
- GreenLUT[255-i]:=v;
- BlueLUT[255-i]:=v;
- end;
- UpdateLUT;
- END.
-
-
- macro 'Square Root Tranform';
- var
- i,v:integer;
- sqrt255:real;
- BEGIN
- sqrt255:=sqrt(255.0);
- for i:=1 to 255 DO begin
- v:=round(sqrt(i)*255.0/sqrt255);
- RedLUT[255-i]:=v;
- GreenLUT[255-i]:=v;
- BlueLUT[255-i]:=v;
- end;
- UpdateLUT;
- END.
-
- macro 'Reset LUT [R]';
- begin
- ResetGrayMap;
- end;
-
-
- macro 'Plot LUT [P]';
- var
- i,xscale,yscale:real;
- width,height,margin,pwidth,pheight:integer;
- xbase,ybase:integer;
- begin
- SaveState;
- margin:=25;
- pwidth:=400;
- pheight:=125;
- width:=pwidth+2*margin;
- height:=pheight*3+2*margin;
- SetNewSize(width,height);
- SetBackground(0);
- MakeNewWindow('LUT');
- xscale:=(pwidth-2)/256;
- yscale:=(pheight-1)/256;
- SetForeground(252);
- xbase:=margin; ybase:=margin;
- MoveTo(xbase,ybase);
- for i:=0 to 255 do
- LineTo(xbase+i*xscale,ybase+RedLUT[i]*yscale);
- SetForeground(255);
- MakeRoi(xbase,ybase,pwidth,pheight);
- FlipVertical;
- DrawBoundary;
- SetForeground(253);
- ybase:=ybase+pheight-1;
- MoveTo(xbase,ybase);
- for i:=0 to 255 do
- LineTo(xbase+i*xscale,ybase+GreenLUT[i]*yscale);
- SetForeground(255);
- MakeRoi(xbase,ybase,pwidth,pheight);
- FlipVertical;
- DrawBoundary;
- SetForeground(254);
- ybase:=ybase+pheight-1;
- MoveTo(xbase,ybase);
- for i:=0 to 255 do
- LineTo(xbase+i*xscale,ybase+BlueLUT[i]*yscale);
- SetForeground(255);
- MakeRoi(xbase,ybase,pwidth,pheight);
- FlipVertical;
- DrawBoundary;
- KillRoi;
- RedLUT[252]:=255; GreenLUT[252]:=0; BlueLUT[252]:=0;
- RedLUT[253]:=0; GreenLUT[253]:=255; BlueLUT[253]:=0;
- RedLUT[254]:=0; GreenLUT[254]:=0; BlueLUT[254]:=255;
- UpdateLUT;
- SetFont('Geneva');
- SetFontSize(9);
- SetText('Centered');
- MoveTo(margin+4,height-margin+8);
- writeln(0:1:2);
- MoveTo(margin+pwidth,height-margin+8);
- writeln(255:1:2);
- RestoreState;
- end;
-
-
- macro 'Show RGB Values [S]';
- var
- x,y,v,savex,savey:integer;
- begin
- repeat
- savex:=x; savey:=y;
- GetMouse(x,y);
- if (x<>savex) or (y<>savey) then begin
- v:=GetPixel(x,y);
- ShowMessage('loc=',x:1,', ',y:1,
- '\value=',v:1,
- '\RGB=',RedLUT[v]:1,', ',GreenLUT[v]:1,', ',BlueLUT[v]:1);
- wait(.5);
- end;
- until button;
- end;
-
-
- macro 'Posterize';
- var
- level,i:integer
- delta,steps,StepSize,NextStep:real;
- begin
- steps:=GetNumber('Number of Gray Steps(2-256):',8);
- StepSize:=256/steps;
- delta:=256/(steps-1);
- NextStep:=trunc(StepSize);
- level:=255;
- for i:=0 to 255 do begin
- if i>=NextStep then begin
- NextStep:=trunc(NextStep+StepSize);
- level:=level-delta;
- UpdateLUT;
- end;
- if level<0 then level:=0;
- RedLUT[i]:=level;
- GreenLUT[i]:=level;
- BlueLUT[i]:=level;
- end;
- end;
-
-
-
-
-